package controllers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import models.TaskGenerator; import models.TaskScheduler; import models.Utilities; import views.MainFrame; public class MainFrameController { private MainFrame frame; private TaskScheduler scheduler; public MainFrameController(final MainFrame frame) { this.frame = frame; frame.setStartButtonActionListener(new StartButtonActionListener()); frame.setClearButtonActionListener(new ClearButtonActionListener()); } public class StartButtonActionListener implements ActionListener { @Override public void actionPerformed(final ActionEvent e) { instantiateServerManager(); } } public class ClearButtonActionListener implements ActionListener { @Override public void actionPerformed(final ActionEvent e) { Utilities.setLogText(scheduler, ""); } } public void instantiateServerManager() { try { if (frame.getMinArrivalTimeField().isEmpty() || frame.getMaxArrivalTimeField().isEmpty() || frame.getMinServingTimeField().isEmpty() || frame.getMaxServingTimeField().isEmpty() || frame.getQueueCountField().isEmpty() || frame.getSimulationTimeField().isEmpty()) { JOptionPane.showMessageDialog(null, "Please fill in all fields!", "Warning", JOptionPane.WARNING_MESSAGE); } else { if (Integer.parseInt(frame.getMinArrivalTimeField()) > Integer.parseInt(frame.getSimulationTimeField()) || Integer.parseInt(frame.getMaxArrivalTimeField()) > Integer .parseInt(frame.getSimulationTimeField())) { JOptionPane.showMessageDialog(null, "Arrival time greater than simulation time"); } else { if (Integer.parseInt(frame.getMinServingTimeField()) > Integer .parseInt(frame.getSimulationTimeField()) || Integer.parseInt(frame.getMaxServingTimeField()) > Integer .parseInt(frame.getSimulationTimeField())) { JOptionPane.showMessageDialog(null, "Serving time greater than simulation time"); } else { int minSrT = (int) Integer.parseInt(frame.getMinServingTimeField()); int maxSrT = (int) Integer.parseInt(frame.getMaxServingTimeField()); int minArT = (int) Integer.parseInt(frame.getMinArrivalTimeField()); int maxArT = (int) Integer.parseInt(frame.getMaxArrivalTimeField()); int queueCount = (int) Integer.parseInt(frame.getQueueCountField()); int serviceTime = (int) Integer.parseInt(frame.getSimulationTimeField()); TaskGenerator t = new TaskGenerator(minSrT, maxSrT, minArT, maxArT, serviceTime); scheduler = new TaskScheduler(t, queueCount, serviceTime, frame); Thread th = new Thread(scheduler); th.start(); } } } } catch (NumberFormatException e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "Please insert only numbers!", "Error", JOptionPane.ERROR_MESSAGE); } } }